package cn.kgc.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author YC
 */
@Configuration
@SuppressWarnings("all")
public class RedissonConfig {

    // 从配置文件读取 Redis 地址（对应 application.yml 中的 spring.redis.host）
//    @Value("${spring.redis.host}")
//    private String redisHost;
    private String redisHost = "192.168.8.106";

    // 从配置文件读取 Redis 端口（对应 application.yml 中的 spring.redis.port）
//    @Value("${spring.redis.port}")
//    private int redisPort;
    private int redisPort = 6379;

    // 从配置文件读取 Redis 密码（对应 application.yml 中的 spring.redis.password，冒号后表示默认值为空）
//    @Value("${spring.redis.password:}")
//    private String redisPassword;
    private String redisPassword = "123456";

    /**
     * 创建RedissonClient对象
     */
    @Bean(destroyMethod = "shutdown")
    RedissonClient redissonClient() {
        Config config = new Config();
        // 拼接 Redis 地址（格式：redis://ip:端口）
        String redisAddress = "redis://" + redisHost + ":" + redisPort;

        config.useSingleServer()
                .setAddress(redisAddress) // 使用配置文件中的地址，不再硬编码localhost
                .setPassword(redisPassword.isEmpty() ? null : redisPassword) // 无密码时传null，避免空字符串报错
                .setConnectTimeout(5000)  // 连接超时时间（毫秒）
                .setTimeout(3000)         // 命令超时时间（毫秒）
                .setRetryAttempts(3);     // 重试次数
        return Redisson.create(config);
    }
}